;常量
SecPerTrk	equ	18	;每个磁道的扇区数

;ReadFd 适用于实模式下
;从第%1个扇区开始，读取%2个扇区到%3:%4的地址中
;1:起始扇区,最大16位(0表示第一扇区)
;2:读取扇区的个数,最大8位
;3:段地址es
;4:偏移地址bx

%macro dsk_ReadFd 4
%%DskReadFd:
	pusha
	push	es
	mov	bl, SecPerTrk
	mov	ax, %1
	div	bl
	inc	ah	
	mov	cl, ah	;起始扇区号
	mov	dh, al
	shr	al, 1	
	mov	ch, al	;柱面号
	and	dh, 1	;磁头号	
	mov	ax, %3 
	mov	es, ax
	mov	bx, %4
	mov	dl, 0	;软盘号（0表示a盘）
%%skip:
	mov	ah, 2	;读
	mov	al, %2	;扇区数
	int	13h
	jc	%%skip	;出错则cf置1，不同读取，知道成功
	pop	es
	popa
%endmacro
